# 大维度定义：key为维度标识，value为（维度名称，包含的小维度列表）
DIMENSIONS = {
    "layout": (
        "Layout 布局",
        ["布局", "间距","对齐", "元素嵌套"]
    ),
    "style": (
        "Style 风格检查",
        ["颜色", "字体/字号", "行高", "边框/圆角", "阴影", "图标引用", "图片引用"]
    ),
    "recall": (
        "元素/组件召回",
        ["组件覆盖度"]
    )
}

# 按大维度拆分的提示词版本字典
PROMPTS = {
    # 布局维度专用提示词
    "v1_layout": """你是一名UI工程师，请从声明式UI的角度分析这两张图片（图一是figma设计稿，图二是实现效果）。
    1、布局
        Excellent：完全还原设计稿文档，相似度 90%+
        Good：基本还原设计，相似度 70%+
        Poor：能看出来大概的样子，相似度 50%+
        Worse：层次不清晰，溢出明显
    2、间距/对齐
        Excellent：间距/对齐与设计稿一致，准确性 90%+
        Good：基本跟设计稿间距/对齐一样，准确性 70%+
        Poor：有一些能对得上，但其他的间距大小不一致，准确性 50%+
        Worse：很乱，间距大小不同或者大部分对齐错位
    3、元素/组件嵌套
        Excellent：元素/组件层级/嵌套与设计稿一致，一致性 90%+
        Good：元素/组件层级/嵌套与设计稿基本一致，一致性 70%+
        Poor：Layer/Group/Section只有小部分跟设计稿对应性，50%+
        Worse：嵌套关系很差基本看不出来或者混乱

    分析规则：
    - 单独分析每个小项，不合并、不关联其他项
    - 从整体角度评价，允许一定偏差，不绝对化

    输出格式：仅返回python字典，键为上述小项名称，值为0-3（Worse/Poor/Good/Excellent）
    输出示例：{"布局":3,"间距","对齐":2,"元素嵌套":1}
    仅输出字典，不要添加其他文字！""",

    # 风格检查维度专用提示词
    "v1_style": """你是一名UI工程师，请从声明式UI的角度分析这两张图片（图一是figma设计稿，图二是实现效果）。
    1、颜色：
        Excellent：颜色与设计稿高度一致，基本无偏差
        Good：颜色与设计稿基本一致，无明显偏差
        Poor：颜色与设计稿存在明显偏差，但是整体还行
        Worse：颜色与设计稿存在明显偏差，影响视觉效果
    2、字体/字号：
        Excellent：字体/字号与设计稿高度一致，基本无偏差
        Good：字体/字号与设计稿基本一致，无明显偏差
        Poor：字体/字号与设计稿存在明显偏差，但是整体还行
        Worse：字体/字号与设计稿存在明显偏差，影响视觉效果
    3、行高：
        Excellent：行高与设计稿高度一致，基本无偏差
        Good：行高与设计稿基本一致，无明显偏差
        Poor：行高与设计稿存在明显偏差，但是整体还行
        Worse：行高与设计稿存在明显偏差，影响视觉效果
    4、边框/圆角：
        Excellent：边框/圆角参数与设计稿完全一致，精准度 90%+
        Good：边框/圆角参数与设计稿基本一致，有极个别细微偏差
        Poor：边框/圆角参数与设计稿存在部分明显偏差，但整体仍可接受
        Worse：边框/圆角参数与设计稿绝大部分存在明显偏差，直接影响视觉效果
    5、阴影：
        Excellent：阴影参数与设计稿完全一致，精准度 90%+
        Good：阴影参数与设计稿基本一致，有极个别细微偏差
        Poor：阴影参数与设计稿存在部分明显偏差，但整体仍可接受
        Worse：阴影参数与设计稿绝大部分存在明显偏差，直接影响视觉效果
    6、图标引用：
        Excellent：图标引用准确，尺寸比例与设计稿基本完全一致
        Good：图标引用准确，尺寸比例与设计稿基本一致，允许个别细微偏差
        Poor：图标引用基本准确，但存在部分尺寸比例偏差，整体仍可辨认
        Worse：图标大量引用错误或尺寸比例严重偏差/缺失
    7、图片引用：
        Excellent：图片引用准确，尺寸比例与设计稿基本完全一致
        Good：图片引用准确，尺寸比例与设计稿基本一致，允许个别细微偏差
        Poor：图片引用基本准确，但存在部分尺寸比例偏差，整体仍可辨认
        Worse：图片大量引用错误或尺寸比例严重偏差/缺失

    分析规则：
    - 单独分析每个小项，不合并、不关联其他项
    - 从整体角度评价，允许一定偏差，不绝对化
    - 如果某一个小项中，两张图片都不涉及，则评3

    输出格式：仅返回python字典，键为上述小项名称，值为0-3（Worse/Poor/Good/Excellent）
    输出示例：{"颜色":2,"字体/字号":3,"行高":2,"边框/圆角":1,"阴影":2,"图标引用":3,"图片引用":2}
    仅输出字典，不要添加其他文字！""",

    # 元素召回维度专用提示词
    "v1_recall": """你是一名UI工程师，请从声明式UI的角度分析这两张图片（图一是figma设计稿，图二是实现效果）。
    1、组件覆盖度
        Excellent：figma中所有组件（图标、图片、标签等）都完整实现，无多余元素
        Good：figma中大部分组件基本实现，允许1-2个组件丢失或多余
        Poor：figma中50%组件实现，存在一些明显遗漏或多余元素
        Worse：元素/组件大量遗漏或多余，影响整体效果

    分析规则：
    - 单独分析该小项，不关联其他维度
    - 从整体角度评价，允许一定偏差，不绝对化

    输出格式：仅返回python字典，键为上述小项名称，值为0-3（Worse/Poor/Good/Excellent）
    输出示例：{"组件覆盖度":3}
    仅输出字典，不要添加其他文字！"""
}

def get_prompt(version: str) -> str:
    """获取指定版本的提示词（支持按大维度的版本，如v1_layout）"""
    if version not in PROMPTS:
        raise ValueError(f"未知的提示词版本: {version}")
    return PROMPTS[version]